---
title: "Final Service Project 2-28"
author: "Michael Drake"
date: "February 28, 2021"
output: pdf_document
---

```{r Load packages, message = FALSE, warning = FALSE}
library(gplots)
library(ggplot2)
library(lme4)
library(sjPlot)
library(lmerTest)
library(lattice)
library(data.table)
library(dplyr)
library(nlme)
library(MASS)
library(fitdistrplus)
library(logspline)
library(Rmisc)
library(plotrr)
library(ggsci)
library(ggpubr)
library(geoR)
library(egg)
```

```{r Load Data, message = FALSE, warning = FALSE}
# Load and clean data
# This data set has a row for each professor for each year
# Additionally, it includes columns for identified outliers and the 'start year' of each professor
# Start year is either their tenure clock start year or the year they are first in the data set, other than 2012

# Lastly, this dataset also assigns profs to a 5-year or 10-year 'generation' group based on their start year

# These data have also been corrected for an error in the previous interation which accidently duplicated the 2016b data and removed the 2018b data from the Boulder FRPA entries.

data <- read.csv('Final Data 2-12.csv',
# data <- read.csv('Final Data TEST 2-23.1.csv',
                 na.strings = 'NA', stringsAsFactors = T)
dim(data) #9230 x 28

# Set reference levels where needed
data$Race <- relevel(data$Race, ref = 'W') #Reference level = White
data$Race.Cat <- relevel(data$Race.Cat, ref = 'White')
data$Dept.Category <- relevel(data$Dept.Category, ref = 'Arts&Humanities')
data$Gen10 <- relevel(data$Gen10, ref = 'g80s&90s')
data$School <- relevel(data$School, ref = 'Denver')

# Create a total FRPA value
data$tot.frpa <- data$A + data$BC + data$D
```

```{r Remove Outliers and log transform, message = FALSE, warning = FALSE}
# NOTE 2019 data has already be removed from this dataset, as Boulder was not represented that year

# Remove outlier
data$Outlier <- as.character(data$Outlier)
data <- data[data$Outlier == 'None', c(1:ncol(data))]
dim(data) #9147 x 28

# Log transform the service variable to help with the overdispersion
data$Dlog <- log(data$D + 1)
data$BClog <- log(data$BC + 1)
data$Alog <- log(data$A + 1)
```

```{r Calculate Group Means and Summary Stats}
# Unique prof counts
setDT(data)[, .(count = uniqueN(ID)), by = Race]

# Sex
summarySE(data = data, measurevar = 'D', groupvars = 'Gender')
summarySE(data = data, measurevar = 'BC', groupvars = 'Gender')
summarySE(data = data, measurevar = 'A', groupvars = 'Gender')

# Race
summarySE(data = data, measurevar = 'D', groupvars = 'Race')
summarySE(data = data, measurevar = 'BC', groupvars = 'Race')
summarySE(data = data, measurevar = 'A', groupvars = 'Race')

# Rank
summarySE(data = data, measurevar = 'D', groupvars = 'Job')
summarySE(data = data, measurevar = 'BC', groupvars = 'Job')
summarySE(data = data, measurevar = 'A', groupvars = 'Job')

# Broken down further

sumsum <- summarySE(data = data, measurevar = 'D', groupvars = c('Job', 'Year'))
View(sumsum)

sumsum <- summarySE(data = data, measurevar = 'BC', groupvars = c('Job', 'Year'))
View(sumsum)

sumsum <- summarySE(data = data, measurevar = 'A', groupvars = c('Job', 'Year'))
View(sumsum)

summarySE(data = data, measurevar = 'BC', groupvars = c('Race', 'Year'))

summarySE(data = data, measurevar = 'BC', groupvars = 'Gender')
summarySE(data = data, measurevar = 'A', groupvars = 'Gender')
```

```{r Service Model}
# Create a full model, without using generation effects and only demographic x time interactions
s.mod <- lmer(data = data, Dlog ~ (1 | ID) + YearDelta + Job + Dept.Category + School +
                  Gender + Race + Gender*YearDelta + Race*YearDelta) # Uses REML

# Quick test to see if a race x job interaction changes anything. It does not.
s.mod <- lmer(data = data, Dlog ~ (1 | ID) + YearDelta + Job + Dept.Category + School +
                  Gender + Race + Gender*YearDelta + Race*YearDelta + Race* Job) # Uses REML

summary(s.mod)
s.m <- summary(s.mod)
View(s.m$coefficients)

# Create percentage changes
s.c <- data.frame(s.m$coefficients)
s.c$Percent <- ((exp(s.c$Estimate) - 1) * 100)
View(s.c)
```


```{r Academic Model}
# Create a full model, without using generation effects and only demographic x time interactions
bc.mod <- lmer(data = data, BClog ~ (1 | ID) + YearDelta + Job + Dept.Category + School +
                  Gender + Race + Gender*YearDelta + Race*YearDelta) # Uses REML
summary(bc.mod)
bc.m <- summary(bc.mod)
View(bc.m$coefficients)

# Create percentage changes
bc.c <- data.frame(bc.m$coefficients)
bc.c$Percent <- ((exp(bc.c$Estimate) - 1) * 100)
View(bc.c)
```

```{r Teaching Model}
# Create a full model, without using generation effects and only demographic x time interactions
a.mod <- lmer(data = data, Alog ~ (1 | ID) + YearDelta + Job + Dept.Category + School +
                  Gender + Race + Gender*YearDelta + Race*YearDelta) # Uses REML
summary(a.mod)
a.m <- summary(a.mod)
View(a.m$coefficients)

# Create percentage changes
a.c <- data.frame(a.m$coefficients)
a.c$Percent <- ((exp(a.c$Estimate) - 1) * 100)
View(a.c)
```


Demographic Averages
```{r Gender Averages}
plot.dat <- melt(data, id.vars = c('ID', 'Race', 'Gender', 'Year'),
                                   measure.vars = c('D', 'BC', 'A'))

plot.log <- melt(data, id.vars = c('ID', 'Race', 'Gender', 'Year'),
                                   measure.vars = c('Dlog', 'BClog', 'Alog'))


g.a <- ggplot(plot.log, aes(x = variable, y = value)) + 
    geom_boxplot(aes(fill = Gender), lwd = .75) +
    ylab('Log of Activity Count') + 
    # xlab('Activity Type') +
    scale_x_discrete(labels = c('Service', 'Scholarship', 'Teaching')) +
    scale_fill_npg(name = 'Sex', labels = c('Female', 'Male')) +
    theme(axis.text = element_text(size = 15),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 15),
          legend.title = element_text(size = 15),
          legend.text = element_text(size = 15),
          legend.key = element_blank()) 
g.a

ggsave('Gender Average Plots 11-10.png',
       plot = g.a,
       width = 10,
       height = 6,
       dpi = 600)
```

```{r Race Averages}
r.a <- ggplot(plot.log, aes(x = variable, y = value)) + 
    geom_boxplot(aes(fill = Race), lwd = .75) +
    ylab('Log of Activity Count') + 
    # xlab('Activity Type') +
    scale_x_discrete(labels = c('Service', 'Scholarship', 'Teaching')) +
    scale_fill_uchicago(labels = c('Asian', 'Black', 'Hispanic', 'Native \nAmerican', 'White')) +
    theme(axis.text = element_text(size = 15),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 15),
          legend.title = element_text(size = 15),
          legend.text = element_text(size = 15),
          legend.key = element_blank()) 
r.a

ggsave('Race Average Plots 4-24.png',
       plot = r.a,
       width = 10,
       height = 6,
       dpi = 600)
```

```{r Job Averages}

job.log <- melt(data, id.vars = c('ID', 'Race', 'Job', 'Year'),
                                   measure.vars = c('Dlog', 'BClog', 'Alog'))


j.a <- ggplot(job.log, aes(x = variable, y = value)) + 
    geom_boxplot(aes(fill = Job), lwd = .75) +
    ylab('Log of Activity Count') + 
    # xlab('Activity Type') +
    scale_x_discrete(labels = c('Service', 'Scholarship', 'Teaching')) +
    scale_fill_simpsons(labels = c('Assistant', 'Associate', 'Full')) +
    theme(axis.text = element_text(size = 15),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 15),
          legend.title = element_text(size = 15),
          legend.text = element_text(size = 15),
          legend.key = element_blank()) +
        labs(fill = 'Rank') 
j.a

ggsave('Job Average Plots 4-22.png',
       plot = j.a,
       width = 10,
       height = 6,
       dpi = 600)
```

By Year Figures

Service
```{r gender by year}
means.gender <- summarySE(data = data, measurevar = 'D', groupvars = c('Gender', 'Year'))

g.y.s <- ggplot(means.gender, aes(x = Year, y = D, color = Gender)) + 
        scale_color_npg(name = 'Sex', labels = c('Female', 'Male')) +
        geom_pointrange(aes(ymin = D - se, ymax = D + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nService Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) + 
        ylim(9, 16)
g.y.s
```

```{r race by year}
means.racecat <- summarySE(data = data, measurevar = 'D', groupvars = c('Race.Cat', 'Year'))

r.y.s <- ggplot(means.racecat, aes(x = Year, y = D, color = Race.Cat)) + 
        #scale_color_manual(values = c("#5ab4ac", "#d8b365")) +
        scale_color_jama(labels = c('White', 'Non-\nWhite')) +
        geom_pointrange(aes(ymin = D - se, ymax = D + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nService Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Racial \nCategory') +
        ylim(9,16)
r.y.s
#ggsave('Race by Year.png',
 #      plot = r.y,
  #     width = 10,
   #    height = 6)
```

Academic
```{r gender by year}
means.gender.aca <- summarySE(data = data, measurevar = 'BC', groupvars = c('Gender', 'Year'))

g.y.a <- ggplot(means.gender.aca, aes(x = Year, y = BC, color = Gender)) + 
        scale_color_npg(name = 'Sex', labels = c('Female', 'Male')) +
        geom_pointrange(aes(ymin = BC - se, ymax = BC + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nScholarship Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
            ylim(9, 16)
g.y.a
```

```{r race by year}
means.racecat.aca <- summarySE(data = data, measurevar = 'BC', groupvars = c('Race.Cat', 'Year'))

r.y.a <- ggplot(means.racecat.aca, aes(x = Year, y = BC, color = Race.Cat)) + 
        scale_color_jama(labels = c('White', 'Non-\nWhite')) +
        geom_pointrange(aes(ymin = BC - se, ymax = BC + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nScholarship Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Racial \nCategory') +
        ylim(9, 16)
r.y.a

```


Teaching

```{r gender by year}
means.gender.tch <- summarySE(data = data, measurevar = 'A', groupvars = c('Gender', 'Year'))

g.y.t <- ggplot(means.gender.tch, aes(x = Year, y = A, color = Gender)) + 
        scale_color_npg(name = 'Sex', labels = c('Female', 'Male')) +
        geom_pointrange(aes(ymin = A - se, ymax = A + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nTeaching Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
            ylim(9, 16)
g.y.t
```

```{r race by year}
means.racecat.tch <- summarySE(data = data, measurevar = 'A', groupvars = c('Race.Cat', 'Year'))

r.y.t <- ggplot(means.racecat.tch, aes(x = Year, y = A, color = Race.Cat)) + 
        scale_color_jama(labels = c('White', 'Non-\nWhite')) +
        geom_pointrange(aes(ymin = A - se, ymax = A + se), lwd = 1.1, fatten = 2) +
        geom_smooth(method = 'lm', lwd = 1.2) +
        ylab('Average Annual \nTeaching Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Racial \nCategory') +
        ylim(9,16)
r.y.t
```

```{r race groups plots}
# Service


data$Race <- factor(data$Race,levels = c('A', 'B', 'H', 'N', 'W'))

means.race.d <- summarySE(data = data, measurevar = 'D', groupvars = c('Race', 'Year'))

race.d <- ggplot(means.race.d, aes(x = Year, y = D, color = Race)) + 
        scale_color_uchicago(labels = c('Asian', 'Black', 'Hispanic', 'Native \nAmerican', 'White')) +
        geom_point(size = 3) +
        geom_smooth(method = 'lm', lwd = 1.2, se = F) +
        ylab('Average Annual \nService Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Race') +
        ylim(4,16)
race.d

# Scholarship
means.race.bc <- summarySE(data = data, measurevar = 'BC', groupvars = c('Race', 'Year'))

race.bc <- ggplot(means.race.bc, aes(x = Year, y = BC, color = Race)) + 
        scale_color_uchicago(labels = c('Asian', 'Black', 'Hispanic', 'Native \nAmerican', 'White')) +
        geom_point(size = 3) +
        geom_smooth(method = 'lm', lwd = 1.2, se = F) +
        ylab('Average Annual \nScholarship Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Race') +
        ylim(4,16)
race.bc



# Teaching
means.race.a <- summarySE(data = data, measurevar = 'A', groupvars = c('Race', 'Year'))

race.a <- ggplot(means.race.a, aes(x = Year, y = A, color = Race)) + 
        scale_color_uchicago(labels = c('Asian', 'Black', 'Hispanic', 'Native \nAmerican', 'White')) +
        geom_point(size = 3) +
        geom_smooth(method = 'lm', lwd = 1.2, se = F) +
        ylab('Average Annual \nTeaching Activity') +
        theme(axis.text = element_text(size = 13),
            axis.title = element_text(size = 15),
            legend.title = element_text(size = 15),
            legend.text = element_text(size = 15),
            legend.key = element_blank()) +
        labs(color = 'Race') +
        ylim(4, 16)
race.a
```


Adding in graphs for seperated race categories to make a 9 panel plot


Combine figures into panels

```{r one step panels}
g.y.s.2 <- g.y.s + ggtitle('Service')  + theme(axis.title.x = element_blank(),
                                             axis.text.x = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"),
                         axis.title.y  = element_blank(),
                         legend.position = 'none')
g.y.a.2 <- g.y.a + ggtitle('Scholarship') + theme(axis.title.x = element_blank(), 
                                             axis.title.y = element_blank(),
                                             axis.text.x = element_blank(),
                                             axis.text.y = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"),
                         legend.position = 'none')
g.y.t.2 <- g.y.t + ggtitle('Teaching') + theme(axis.title.x = element_blank(),
                                             axis.title.y = element_blank(),
                                             axis.text.x = element_blank(),
                                             axis.text.y = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"))

r.y.s.2 <- r.y.s + theme(axis.title.x = element_blank(),
                         axis.title.y = element_text(size = 16, face = "bold"),
                         axis.text.x = element_blank(),
                         legend.position = 'none') + ylab('Mean Annual Activity')
                                        #ylab('Averave Annual Activity')
r.y.a.2 <- r.y.a + theme(axis.title.x = element_blank(), 
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank(),
                         axis.text.x = element_blank(),
                         legend.position = 'none')
r.y.t.2 <- r.y.t + theme(axis.title.x = element_blank(),
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank(),
                         axis.text.x = element_blank())

race.s <- race.d + theme(axis.title.x = element_blank(),
                         axis.title.y  = element_blank(),
                         legend.position = 'none') #+ ylab(' ')

race.sc <- race.bc + theme(axis.title.x = element_blank(), 
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank(),
                         legend.position = 'none')
race.t <- race.a + theme(axis.title.x = element_blank(),
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank())
# the egg package was the key!
final.plot <-
    ggarrange(
        g.y.s.2, g.y.a.2, g.y.t.2,
        r.y.s.2, r.y.a.2, r.y.t.2,
        race.s, race.sc, race.t,
        nrow = 3, ncol = 3
    )
final.plot

ggsave('Final Time Series Plots 11-10.png',
       plot = final.plot,
       width = 10,
       height = 6,
       dpi = 600)

```


```{r Create Panels}
# Gender
g.y.s.2 <- g.y.s + ggtitle('Service')  + theme(axis.title.x = element_blank(),
                                             axis.text.x = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"),
                         axis.title.y  = element_blank()) +
                                             ylab(' ')
g.y.a.2 <- g.y.a + ggtitle('Scholarship') + theme(axis.title.x = element_blank(), 
                                             axis.title.y = element_blank(),
                                             axis.text.x = element_blank(),
                                             axis.text.y = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"))
g.y.t.2 <- g.y.t + ggtitle('Teaching') + theme(axis.title.x = element_blank(),
                                             axis.title.y = element_blank(),
                                             axis.text.x = element_blank(),
                                             axis.text.y = element_blank(),
                                             plot.title = element_text(size = 16, face = "bold"))


gender.plot <-
    ggarrange(
        g.y.s.2, g.y.a.2, g.y.t.2,
        nrow = 1, ncol = 3,
        common.legend = TRUE, legend = "right"
    )
gender.plot

# Race
r.y.s.2 <- r.y.s + theme(axis.title.x = element_blank(),
                         axis.title.y  = element_blank(),
                         axis.text.x = element_blank())
                                        #ylab('Averave Annual Activity')
r.y.a.2 <- r.y.a + theme(axis.title.x = element_blank(), 
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank(),
                         axis.text.x = element_blank())
r.y.t.2 <- r.y.t + theme(axis.title.x = element_blank(),
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank(),
                         axis.text.x = element_blank())

race.plot <-
    ggarrange(
        r.y.s.2, r.y.a.2, r.y.t.2,
        nrow = 1, ncol = 3,
        common.legend = TRUE, legend = "right"
    )
race.plot

race.s <- race.d + theme(axis.title.x = element_blank(),
                         axis.title.y  = element_blank()) #+ ylab(' ')

race.sc <- race.bc + theme(axis.title.x = element_blank(), 
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank())
race.t <- race.a + theme(axis.title.x = element_blank(),
                                        axis.title.y = element_blank(),
                                        axis.text.y = element_blank())
all.race.plot <-
    ggarrange(
        race.s, race.sc, race.t,
        nrow = 1, ncol = 3,
        common.legend = TRUE, legend = "right"
    )
all.race.plot




combined.plot <- ggarrange(gender.plot, race.plot, all.race.plot, ncol = 1, nrow = 3)
combined.plot # Fix y label mismatch by changing ylab tet sizes in first and third row

ggsave('Combined Time Series Plots.png',
       plot = combined.plot,
       width = 10,
       height = 6,
       dpi = 600)
```

Generation Figures
```{r Generation and Demographics figures}

# Gender Means by generation
gen.dat <- data[is.na(data$Gen10) == FALSE, c(1:ncol(data))]
gen.plot <- melt(gen.dat, id.vars = c('ID', 'Gen10', 'Race', 'Gender', 'Year', 'Race.Cat'),
                                   measure.vars = 'Dlog')


gen.g <- ggplot(gen.plot, aes(x = Gen10, y = value)) + 
    geom_boxplot(aes(fill = Gender), lwd = .75) +
    ylab('Log of Activity Count') + 
    # xlab('Activity Type') +
    scale_x_discrete(labels = c("1990's & prior", "2000's", "2010's")) +
    scale_fill_npg(name = 'Sex', labels = c('Female', 'Male')) +
    theme(axis.text = element_text(size = 15),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 15),
          legend.title = element_text(size = 15),
          legend.text = element_text(size = 15),
          legend.key = element_blank()) 
gen.g

ggsave('Generation by Gender 11-10.png',
       plot = gen.g,
       width = 10,
       height = 6,
       dpi = 600)




# Race
gen.r <- ggplot(gen.plot, aes(x = Gen10, y = value)) + 
    geom_boxplot(aes(fill = Race.Cat), lwd = .75) +
    ylab('Log of Activity Count') + 
    # xlab('Activity Type') +
    scale_x_discrete(labels = c("1990's & prior", "2000's", "2010's")) +
    scale_fill_jama() +
    theme(axis.text = element_text(size = 15),
          axis.title.x = element_blank(),
          axis.title.y = element_text(size = 15),
          legend.title = element_text(size = 15),
          legend.text = element_text(size = 15),
          legend.key = element_blank()) +
    labs(fill = 'Racial \nCategory') 
gen.r

ggsave('Generation by Race.png',
       plot = gen.r,
       width = 10,
       height = 6,
       dpi = 600)



# Summmary stats for generation
anova(aov(data = gen.dat, Dlog ~ Race * Gen10 + Gender * Gen10))
anova(lm(data = gen.dat, Dlog ~ Gender * Gen10))
summary(lm(data = gen.dat, Dlog ~ Gender * Race))

summary(lm(data = gen.dat, Dlog ~ Gender * Gen10 + Race * Gen10))

# Final generation model
g.mod <- lm(data = gen.dat, Dlog ~ Gender * Gen10 + Race * Gen10)

summary(g.mod)
g.m <- summary(g.mod)

g.c <- data.frame(g.m$coefficients)
g.c$Percent <- ((exp(g.c$Estimate) - 1) * 100)
View(g.c)
```

```{r Demographics by Year 5-26}
demo.dat <- read.csv('Demographics by Year.csv')
demo.dat$good <- (demo.dat$good * 100)

#demo.dat$color <- as.factor(demo.dat$color)

#levels(demo.dat$color) <- c("Percent.Female", "Percent.Male",
                            #"Percent.Asian", "Percent.Black",
                            #"Percent.Hispanic", "Percent.Hispanic", "Percent.White")

#levels(demo.dat$color)

demo.cols <- c('#E64B35FF', '#4DBBD5FF', '#800000FF', '#767676FF', '#FFA319FF', '#8A9045FF', '#155F83FF')

demo.plot<- ggplot(demo.dat, aes(x = Year, y = good, color = color, linetype = color)) +
    geom_point(size = 2) + 
    geom_line(size = 1) +
    scale_color_manual(values = demo.cols,
                       labels = c('Female', 'Male', 'Asian', 'Black', 'Hispanic',
                                  'Native American', 'White')) +
    scale_linetype_manual(values = c("dotdash", "dotdash", 
                                     "solid", "solid", "solid", "solid", "solid"),
                          guide = F) +
    ylab('Percent') +
    labs(color = 'Demographic Group')
    

demo.plot

ggsave('Demographics by Year.png',
       plot = demo.plot,
       width = 10,
       height = 6,
       dpi = 600)
```